package untiring07.swing.component;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;

public class J22_JTable extends JFrame {
	   
	   public J22_JTable() {
	      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	      setBounds(250, 250, 450, 350);
	      setLayout(new BorderLayout());
	      setTitle("JTable 맛배기");
	      
	      //스크롤 영역 생성(반드시 필요)
	      JScrollPane scroll = new JScrollPane();
	      scroll.setPreferredSize(new Dimension(400,300));
	      getContentPane().add(scroll);
	      
	      //JTable에  표시할 데이터들과 제목을 정의하기 위해 DefaultTableModel클래스 생성
	      //DefaultTableModel model = new DefaultTableModel();
	      // 수정불가 TableModel작성(내부클래스)
	      	DefaultTableModel model = new DefaultTableModel(){
	      		 @Override
	      		public boolean isCellEditable(int row, int column) {
	      			return false;
	      		}//열 수정불가
	      		
	      	};
	      //제목작성
	      String title[] = {"제목1","제목2","제목3","제목4","제목5"};
	      model.setColumnIdentifiers(title);
	      //본문작성
	      // model.addRow(new String[] {"11","22","33","44","55"});
	      for(int i = 1; i<=50; ++i){
	      model.addRow(new String[] {i+1+"",i+2+"",i+3+"",i+4+"",i+5+""});
	      }
	      // JTable 생성
	      JTable table = new JTable();
	      table.setModel(model);
	      
	      // 테이블의 셀 내용을 가운데로 정렬
	      // 테이블 셀의 세부속성을 상세히 제어하려면 DefaultTableRenferer 클래스를 사용
	      // 정렬, 크기조절, 그림삽입 , 다양한 컴퍼넌트 삽입등등의 고급효과는 DefaultTableRenferer 없이는 처리 불가
	      DefaultTableCellRenderer cell = new DefaultTableCellRenderer();
	      cell.setHorizontalAlignment(JLabel.CENTER);// 가운데 정렬
	      table.getColumnModel().getColumn(0).setCellRenderer(cell);
	      table.getColumnModel().getColumn(2).setCellRenderer(cell);
	      table.getColumnModel().getColumn(3).setCellRenderer(cell);
	      table.getColumnModel().getColumn(4).setCellRenderer(cell);
	      
	      //JTable에 마우스 더블클릭 이벤트 추가
	      table.addMouseListener(new MouseAdapter() {
	    	  @Override
	    	public void mouseClicked(MouseEvent e) {
	    		if(e.getClickCount()==2){//더블클릭하면
	    			JTable table = (JTable)e.getSource();
	    			int row = table.getSelectedRow(); //선택행
	    			int col = table.getSelectedColumn(); // 선택열
	    			String val = (String)table.getValueAt(row, col); // 값출력
	    			String msg = row + "/" + col + "/" +val;
	    			JOptionPane.showMessageDialog(null, msg);
	    		}
	    	}
		});
	      // 스크롤페인의 뷰 영역에 Jtable 추가
	      scroll.setViewportView(table);
	      
	      // 화면에 표시
	      setVisible(true);
	   }
	 
	   
	   public static void main(String arg[]) {
		      EventQueue.invokeLater(new Runnable() {
		         
		         @Override
		         public void run() {
		            new J22_JTable();            
		         }
		      });
		 
		   }
		}